using System;

namespace LS.Digitize
{
    public interface IReader
    {
        bool Goto(string key);
        string GoNext();
        string ReadPropertyName();
        char ReadChar();
        string ReadString();
        byte ReadByte();
        byte[] ReadByteArray();
        bool ReadBool();
        sbyte ReadSbyte();
        short ReadShort();
        int ReadInt();
        long ReadLong();
        ulong ReadUlong();
        ushort ReadUshort();
        uint ReadUint();
        float ReadFloat();
        double ReadDouble();
        decimal ReadDecimal();
        byte[] ReadElement();
        void SkipElement();
        void Dispose();

        bool CouldBeNull();
        void ReadNull();
        bool StartReadFile();
        void EndReadFile();
        bool StartReadObject();
        void EndReadObject();
        bool StartReadDictionary();
        void EndReadDictionary();
        bool StartReadDictionaryKey();
        void EndReadDictionaryKey();
        bool StartReadDictionaryValue();
        void EndReadDictionaryValue();
        bool StartReadCollection();
        void EndReadCollection();
        bool StartReadCollectionItem();
        void EndReadCollectionItem();
    }
}